We want to replicate the simulations presented in Hozo et al.’s paper.
I’ll use some functions from my helper functions package dontpanic.
hozo_sim <- tibble(dist = list( # I love this function.
list(rdist = "norm",
rpars = list(mean = 50, sd = 17)),
list(rdist = "lnorm",
rpars = list(meanlog = 4, meansd = 0.3)),
list(rdist = "beta",
rpars = list(9, 4)),
list(rdist = "exp",
rpars = 10),
list(rdist = "weibull",
rpars = c(2, 35))
)) %>%
mutate( # Calculate true mean and sd.
true_mean = map2_dbl(
map_chr(dist, "rdist"),
map(dist, "rpars"),
.f = dontpanic::get_mean
),
true_sd = pmap_dbl(
list(
map_chr(dist, "rdist"),
map(dist, "rpars"),
true_mean
),
.f = dontpanic::get_sd
),
rdist = map_chr(dist, "rdist"),
rpars = map(dist, "rpars")
) %>%
select(-dist) %>%
mutate(
sim_pars = pmap(list(rdist, rpars, true_mean, true_sd), list)
) %>%
select(sim_pars)
hozo_sim <- cross(
list(sim_pars = hozo_sim$sim_pars,
n = seq(8, 100, by = 2),
sim_index = seq(1, 100))
)
# Convert to tibble.
hozo_sim <- tibble(
rdist = map_chr(hozo_sim, c(1,1)),
rpars = map(hozo_sim, c(1,2)),
true_mean = map_dbl(hozo_sim, c(1,3)),
true_sd = map_dbl(hozo_sim, c(1, 4)),
n = map_dbl(hozo_sim, "n")
) %>% # Generate samples from parameters.
mutate(sample = pmap(list(n = n, dist = rdist, par = rpars),
dontpanic::get_sample)) %>%
mutate( # Calculate summary statistics.
min = map_dbl(sample, min),
first_q = map_dbl(sample, quantile, p = 0.25),
median = map_dbl(sample, median),
third_q = map_dbl(sample, quantile, p = 0.75),
max = map_dbl(sample, max)
)
# Not sure I need parameters as variables.
# mutate(
# rpar1 = map_dbl(rpars, 1),
# rpar2 = map_dbl(rpars, 2, .default = NA)
# )
# Take a look.
hozo_sim %>% listviewer::jsonedit()